// 1.引入依赖包
import axios from "axios"
import querystring from "querystring"
import Vue from "vue"
import { errorAlert } from "../utils/alert"
import store from "../store"

// 2.环境
//开发环境：8080
if (process.env.NODE_ENV == "development") {
    Vue.prototype.$pre = "http://localhost:3000"
}
//生产环境：3000
if (process.env.NODE_ENV == "production") {
    Vue.prototype.$pre = ""
}


// 3.请求拦截
axios.interceptors.request.use(config => {
    //携带一些参数
    if (config.url !== "/api/userlogin") {
        config.headers.authorization = store.state.info.token
    }
    return config;
})

// 4.响应拦截
axios.interceptors.response.use(res => {
    //打印数据
    console.log("本次请求地址是：" + res.config.url)
    console.log(res);

    //响应的逻辑
    //统一处理失败
    if (res.data.code !== 200) {
        errorAlert(res.data.msg)
    }

    //统一处理掉线
    if (res.data.msg == "登录已过期或访问权限受限") {
        //清除用户信息
        store.dispatch("changeInfo", {})
        //跳转登录
        router.push("/login")
    }

    return res;
})

// 5. 封装get
/**
 *
 *
 * @param {*} url 请求路径
 * @param {*} [params={}] 参数，默认参数是{}
 * @returns axios
 */
export function get(url, params = {}) {
    return axios({
        url,
        method: "get",
        params: params
    })
}

// 6.封装post
/**
 *
 *
 * @param {*} url 请求路径
 * @param {*} [params={}] 参数
 * @param {boolean} [isFile=false] 是否文件，默认false
 * @returns axios
 */
export function post(url, params = {}, isFile = false) {
    let data = null
    if (isFile) {
        data = new FormData()
        for (let key in params) {
            data.append(key, params[key])
        }
    } else {
        data = querystring.stringify(params)
    }
    return axios({
        url,
        method: "post",
        data
    })
}